package com.woniuxy.service;

import com.woniuxy.DTO.AddCageDTO;
import com.woniuxy.DTO.GoDownAnimalDTO;
import com.woniuxy.domain.AlgsCage;
import com.woniuxy.domain.AlgsType;
import com.woniuxy.vo.AlgsCageSizeVO;
import com.woniuxy.vo.AlgsCageVO;
import com.woniuxy.vo.IAlgsSelectCageBy2ByCageSizeIdVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IAlgsCageService {
    List<AlgsCageSizeVO> selectAllCage();

    int goDown(GoDownAnimalDTO goDownAnimalDTO);
    AlgsCage selectByPrimaryKey(Long id);
    List<AlgsCage>selectByCageSizeIdAndTypeId(Long cageSizeId);
    /**
     * 查询笼子（库存）
     *
     * @param cageId 笼子（库存）主键
     * @return 笼子（库存）
     */
    public AlgsCage selectAlgsCageByCageId(Long cageId);

    /**
     * 查询笼子（库存）列表
     *
     * @param algsCage 笼子（库存）
     * @return 笼子（库存）集合
     */
    public List<AlgsCage> selectAlgsCageList(AlgsCage algsCage);

    /**
     * 新增笼子（库存）
     *
     * @param algsCage 笼子（库存）
     * @return 结果
     */
    public int insertAlgsCage(AlgsCage algsCage);

    /**
     * 修改笼子（库存）
     *
     * @param algsCage 笼子（库存）
     * @return 结果
     */
    public int updateAlgsCage(AlgsCage algsCage);

    /**
     * 批量删除笼子（库存）
     *
     * @param cageIds 需要删除的笼子（库存）主键集合
     * @return 结果
     */
    public int deleteAlgsCageByCageIds(Long[] cageIds);

    /**
     * 删除笼子（库存）信息
     *
     * @param cageId 笼子（库存）主键
     * @return 结果
     */
    public int deleteAlgsCageByCageId(Long cageId);
    //查询所有的笼子使用状态
    List<AlgsType> selectAllCageType();
    //查询所有笼子信息
    List<AlgsCageVO> selectAllCageList(AlgsCage algsCage);
    //新增笼位
    int addCage(AddCageDTO addCageDTO);

    //    根据传如的cageSizeId去查这个尺寸的笼子有多少个
    List<IAlgsSelectCageBy2ByCageSizeIdVO>selectCageBy2ByCageSizeId(@Param("cageSizeId") Long cageSizeId);
}
